35 research outputs found

    C-Sim, un simulador de manejo de memoria de C/C++

    Get PDF
    La materia de Programación es parte de la formación obligatoria para alcanzar el grado en Ingeniería Informática. En la Escuela Superior de Ingeniería Informática de la Universidad de Vigo, se ha apostado por una enseñanza más tradicional (imperative-first), de la programación: frente a la estrategia de empezar directamente con programación orientada a objetos, llamada objects first. Inicialmente se realiza una primera parte (la asignatura Programación I), en C++ (sin utilizar clases y objetos), y a continuación, en Programación II, se explora el paradigma orientado a objetos con el mismo lenguaje. Esto hace que los estudiantes se enfrenten a conceptos, como el de manejo de la memoria, a un nivel de abstracción más cercano a la máquina. Así, deben comprender conceptos como punteros, bloques de memoria, liberación de memoria... etc. C-Sim nace como una herramienta de ayuda a la docencia, con la que el profesor puede poner fácilmente ejemplos en clase, y con la que los estudiantes pueden experimentar en horas no presenciales.SUMMARY -- The subject of Programming is part of the mandatory formation for undergraduate students of Computer Science Engineering. At the Escuela Superior de Ingeniería Informática of the University of Vigo, we have taken the path of dividing this formation in two actual subjects: Programación I, for procedural programming, and Programación II, focused in object-oriented programming. In contrast to the strategy called objects first, we still use a imperative first approach. Both subjects use the same vehicular programming language: C++. This forces students to understand programming concepts, such as memory management, from a quite low abstraction level: pointers, memory blocks, memory release, etc. C-Sim was created as an assistance tool for the lecturer to be able to create examples in the classroom, while the students can experiment with the tool in their own

    Pooi, un intérprete de un lenguaje orientado a objetos basado en prototipos para la educación

    Get PDF
    En cursos avanzados del grado en Ingeniería Informática, es interesante explorar otras opciones al margen del típico modelo de programación orientado a objetos basado en clases. El modelo basado en prototipos es de hecho muy interesante, pues llega a ser capaz de representar el modelo basado en clases. Sin embargo, no es sencillo encontrar lenguajes basados en prototipos que permitan que el estudiante interaccione con ellos de una manera sencilla y didáctica. Fruto de este problema nace Pooi (Prototype-based Object-Oriented Interpreter), un pequeño intérprete de objetos cuyo fin último es el de servir de ejemplo sencillo del funcionamiento interno de estos lenguajes, así como de ser una herramienta con la que los alumnos puedan experimentar en su tiempo no presencial.SUMMARY -- In advanced courses of the Computer Science Engineering is interesting to explore other options apart from the typical object-oriented programming model, based on classes. The prototype-based model is indeed interesting, since is able to represent the class-based one. However, it is not easy to find prototype-based languages that are simple for the student to interact with, in a didactic way. Pooi (Prototype-based Object-Oriented Interpreter), was developed as a way to cover this need, to be a tool suitable for demonstrations of the internal workings for this kind of programming languages, as well as for the students to experiment on their own

    An Efficient Platform for the Automatic Extraction of Patterns in Native Code

    Get PDF
    Different software tools, such as decompilers, code quality analyzers, recognizers of packed executable files, authorship analyzers, and malware detectors, search for patterns in binary code. The use of machine learning algorithms, trained with programs taken from the huge number of applications in the existing open source code repositories, allows finding patterns not detected with the manual approach. To this end, we have created a versatile platform for the automatic extraction of patterns from native code, capable of processing big binary files. Its implementation has been parallelized, providing important runtime performance benefits for multicore architectures. Compared to the single-processor execution, the average performance improvement obtained with the best configuration is 3.5 factors over the maximum theoretical gain of 4 factors

    Utilización de patrones de diseño en la asignatura de Procesadores de Lenguaje

    Get PDF
    La asignatura de Procesadores de Lenguaje comprende el aprendizaje de una teoría formal y el desarrollo práctico de un procesador de lenguaje. La fase de análisis semántico es comúnmente descrita mediante el uso de formalismos tales como gramáticas atribuidas. En este artículo presentamos cómo hemos utilizado patrones de diseño para la enseñanza teórica de sistemas de tipos y el desarrollo práctico del analizador semántico de un compilador. Nuestro enfoque facilita la comprensión de conceptos teóricos gracias a que la notación utilizada (UML) es conocida por los estudiantes. Adicionalmente, los diseños son aplicados en el desarrollo práctico de un procesador de lenguaje, reforzando competencias propias de Ingeniería del Software.Peer Reviewe

    Framework for the declarative implementation of native mobile applications

    Get PDF
    The development of connected mobile applications for a broad audience is a complex task because of the existing device diversity. In order to soothe this situation, device-independent approaches are aimed at implementing platform-independent applications, hiding the differences among the diverse families and models of mobile devices. Most of the existing approaches are based on the imperative definition of applications, which are either compiled to a native application, or executed in a Web browser. The client and server sides of applications are implemented separately, using different mechanisms for data synchronisation. In this study, the authors propose device-independent mobile application generation (DIMAG), a framework for defining native device-independent client-server applications based on the declarative specification of application workflow, state and data synchronisation, user interface and data queries. The authors have designed DIMAG considering the dynamic addition of new types of devices, and facilitating the generation of applications for new target platforms. DIMAG has been implemented taking advantage of existing standard

    Design patterns for teaching type checking in a compiler construction course

    Get PDF
    A course in compiler construction seeks to develop an understanding of well-defined fundamental theory and typically involves the production of a language processor. In a graduate degree in software engineering, the development of a compiler contributes significantly to the developer's comprehension of the practical application of theoretical concepts. Different formal notations are commonly used to define type systems, and some of them are used to teach the semantic analysis phase of language processing. In the traditional approach, attribute grammars are probably the most widely used ones. This paper shows how object-oriented design patterns represented in unified modeling language (UML) can be used to both teach type systems and develop the semantic analysis phase of a compiler. The main benefit of this approach is two-fold: better comprehension of theoretical concepts because of the use of notations known by the students (UML diagrams), and improvement of software engineering skills for the development of a complete language processor

    C-Sim, un simulador de manejo de memoria de C/C++

    Get PDF
    La materia de Programación es parte de la formación obligatoria para alcanzar el grado en Ingeniería Informática. En la Escuela Superior de Ingeniería Informática de la Universidad de Vigo, se ha apostado por una enseñanza más tradicional (imperative-first), de la programación: frente a la estrategia de empezar directamente con programación orientada a objetos, llamada objects first. Inicialmente se realiza una primera parte (la asignatura Programación I), en C++ (sin utilizar clases y objetos), y a continuación, en Programación II, se explora el paradigma orientado a objetos con el mismo lenguaje. Esto hace que los estudiantes se enfrenten a conceptos, como el de manejo de la memoria, a un nivel de abstracción más cercano a la máquina. Así, deben comprender conceptos como punteros, bloques de memoria, liberación de memoria... etc. C-Sim nace como una herramienta de ayuda a la docencia, con la que el profesor puede poner fácilmente ejemplos en clase, y con la que los estudiantes pueden experimentar en horas no presenciales.The subject of Programming is part of the mandatory formation for undergraduate students of Computer Science Engineering. At the Escuela Superior de Ingeniería Informática of the University of Vigo, we have taken the path of dividing this formation in two actual subjects: Programación I, for procedural programming, and Programación II, focused in object-oriented programming. In contrast to the strategy called objects first, we still use a imperative first approach. Both subjects use the same vehicular programming language: C++. This forces students to understand programming concepts, such as memory management, from a quite low abstraction level: pointers, memory blocks, memory release, etc. C-Sim was created as an assistance tool for the lecturer to be able to create examples in the classroom, while the students can experiment with the tool in their own

    Pooi, un intérprete de un lenguaje orientado a objetos basado en prototipos para la educación

    Get PDF
    En cursos avanzados del grado en Ingeniería Informática, es interesante explorar otras opciones al margen del típico modelo de programación orientado a objetos basado en clases. El modelo basado en prototipos es de hecho muy interesante, pues llega a ser capaz de representar el modelo basado en clases. Sin embargo, no es sencillo encontrar lenguajes basados en prototipos que permitan que el estudiante interaccione con ellos de una manera sencilla y didáctica. Fruto de este problema nace Pooi (Prototype-based Object-Oriented Interpreter), un pequeño intérprete de objetos cuyo fin último es el de servir de ejemplo sencillo del funcionamiento interno de estos lenguajes, así como de ser una herramienta con la que los alumnos puedan experimentar en su tiempo no presencial.In advanced courses of the Computer Science Engineering is interesting to explore other options apart from the typical object-oriented programming model, based on classes. The prototype-based model is indeed interesting, since is able to represent the class-based one. However, it is not easy to find prototype-based languages that are simple for the student to interact with, in a didactic way. Pooi (Prototype-based Object-Oriented Interpreter), was developed as a way to cover this need, to be a tool suitable for demonstrations of the internal workings for this kind of programming languages, as well as for the students to experiment on their own

    Utilización de patrones de diseño en la asignatura de Procesadores de Lenguaje

    Get PDF
    La asignatura de Procesadores de Lenguaje comprende el aprendizaje de una teoría formal y el desarrollo práctico de un procesador de lenguaje. La fase de análisis semántico es comúnmente descrita mediante el uso de formalismos tales como gramáticas atribuidas. En este artículo presentamos cómo hemos utilizado patrones de diseño para la enseñanza teórica de sistemas de tipos y el desarrollo práctico del analizador semántico de un compilador. Nuestro enfoque facilita la comprensión de conceptos teóricos gracias a que la notación utilizada (UML) es conocida por los estudiantes. Adicionalmente, los diseños son aplicados en el desarrollo práctico de un procesador de lenguaje, reforzando competencias propias de Ingeniería del Software
    corecore